Resumen

Este informe realiza un anális sobre una lista de URLs marcadas públicamente como phising. La fuente de estas IPs es Phistank. Concretamente, se quiere conocer la respuesta a las siguientes preguntas:

Análisis

Phistank proporciona una serie de URLs las cuales son reportadas por diferentes usuarios a nivel mundial. Estas URLs son mantenidas en este repositorio mientras permanezcan en línea. Phistank permite descargar un archivo con esta información así como una serie de metadatos, entre los que se incluyen el país de origen del dominio presente en la URL, dirección IP, ASN, etc.

Los datos iniciales tienen la siguiente estructura:

##        ip_address       cidr_block country
## 1   185.35.138.34  185.35.136.0/22      NL
## 2    93.188.160.8  93.188.160.0/21      LT
## 3   145.14.145.70  145.14.144.0/23      NL
## 4   145.14.145.42  145.14.144.0/23      NL
## 5 209.202.252.101 209.202.192.0/18      US
## 6   185.28.21.145   185.28.21.0/24      LT

Como puede verse, los países son identificados utilizando la norma ISO 3166, por lo que utilizamos en nuestro código este estándar, evitando errores al momento de leer los datos. Igualmente, se utiliza una paleta de colores personalizada para poder visualizar de mejor manera los datos en el mapa, al igual que una escala logarítmica pues el número de coincidencias por país difiere enormemente (esto se verá con detalle más adelante).

#Generate MapData
map_data <- joinCountryData2Map(countries_tables, joinCode="ISO2", 
                            nameJoinColumn="countries", verbose = F)
## 104 codes from your data successfully matched countries in the map
## 1 codes from your data failed to match with a country code in the map
## 137 codes from the map weren't represented in your data
#Change MapColorPalette
map_color_palette <- RColorBrewer::brewer.pal(n = 7, name = "YlOrRd")
map_country_data <- mapCountryData(map_data, mapTitle = "PhishMap", nameColumnToPlot="Freq", 
               catMethod = "logFixedWidth", colourPalette = map_color_palette, 
               addLegend = F, lwd = 1, borderCol = 'black')

Representando la información por país, se puede observar que la gran mayoría de las URLs apuntan a direcciones IP localizadas en Estados Unidos, China y Europa en general.

Ahora tenemos una representación del número real de URLs alojadas en los primeros diez países. Podemos confirmar que, en efecto, el mayor número de las mismas corresponden a Estados Unidos por un amplio margen.

Podemos igualmente visualizar cuáles son los bloques CIDR más utilizados, buscando identificar algún tipo de indicio que muestre si estas IPs están ubicadas en grupos de Data Centers específicos.

Igualmente, se puede tomar únicamente el FQDN de cada URL y agruparlas, buscando identificar a través de qué dominios se ejecutan estas campañas de Phising. El resultado muestra que se hace un uso considerable de acortadores de URL como bit.ly. Por otra parte, se aprecia un uso recurrente de diferentes dominios o sub-dominios relacionados con Google, como por ejemplo, Google Docs o Google Drive, entre otros.

##                             Domains Appearances
## 12248                www.kf25zx.com         121
## 1528                         bit.ly         100
## 12277              www.kloshpro.com          73
## 4855                     jaaeza.com          63
## 7657  radiocatolicalaconsentida.com          55
## 11683              www.fynances.com          53
##                                                             Domains Appearances
## 8541                                               sites.google.com          36
## 2860                                                docs.google.com          33
## 2946                                               drive.google.com          22
## 4312 hlllps.view.online.reader.google.drive.com.koopdesignworks.com          17
## 8892                                         storage.googleapis.com           7
## 2952                                  drivegoogle.myglobalchild.com           4

Debido a la amplia predominancia de Estados Unidos con respecto al total de URLs de phising, se consideró adecuado hilar más fino en estas y visualizar los datos por estado y ciudades. Sin embargo, vale la pena mencionar que se encontró una serie de problemas al momento de realizar la geolocalización de las IPs:

En conjunto, todos estos puntos volvieron inviable la ejecución del proyecto sin incluir paralelismo, por lo que fue incluido en nuestro código. Durante nuestra pruebas, realizamos diferentes experimentos variando el número de cores utilizados para el procesamiento de los datos, encontrando como hecho curioso que utilizando todos los cores de la máquina traía en algunos casos resultados incluso peores que cuando se excluía un core. Se llegó a la conclusión de que al no disponer R de un core libre para realizar la orquestación necesaria de los diferentes sub-procesos creados, se generaba un cuello de botella.

Por otra parte, se realizaron pruebas en una máquina más potente con un número más elevado de cores; sin embargo, nos encontramos con un problema diferente y es que el ordenador se quedó sin memoria disponible. Concluimos que esto se debe a que cada subproceso tiene en su espacio de memoria una copia por separado del dataframe con la información de geolocalización. Por esta razón, al aumentar demasiado el número de cores, se agota con mucha más rapidez la memoria del equipo.

Finalmente, tras un tratamiento complejo de los datos, fuimos capaces de generar una serie de mapas los cuales representan todos la misma información: la distribución por estado y ciudad de las URLs alojadas en Estados Unidos. Empleamos tres mapas diferentes porque fuimos encontrando opciones cada vez mejores, pero no descartamos las primeras para reflejar mayor variedad.